package com.ruoyi.report.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import lombok.Data;

/**
 * Item Performance Report
 * @TableName walmart_item_performance_report
 */
@TableName(value ="walmart_item_performance_report")
@Data
public class WalmartItemPerformanceReport implements Serializable {

    @TableId(value = "id", type = IdType.AUTO)  // 设置主键和主键策略
    private Long id;
    /**
     * 产品名称
     */
    @TableField(value = "product_name")
    private String productName;

    /**
     * 商品ID
     */
    @TableField(value = "item_id")
    private String itemId;

    /**
     * SKU ID
     */
    @TableField(value = "sku_id")
    private String skuId;

    /**
     * 超级部门
     */
    @TableField(value = "super_department")
    private String superDepartment;

    /**
     * 部门
     */
    @TableField(value = "department")
    private String department;

    /**
     * 类别
     */
    @TableField(value = "category")
    private String category;

    /**
     * 子类别
     */
    @TableField(value = "sub_category")
    private String subCategory;

    /**
     * 品牌
     */
    @TableField(value = "brand")
    private String brand;

    /**
     * 总商品价值
     */
    @TableField(value = "gmv")
    private BigDecimal gmv;

    /**
     * 佣金
     */
    @TableField(value = "commission")
    private BigDecimal commission;

    /**
     * 商品总价值与佣金的差额
     */
    @TableField(value = "gmv_commission")
    private BigDecimal gmvCommission;

    /**
     * 平均单价
     */
    @TableField(value = "aur")
    private BigDecimal aur;

    /**
     * 总销售单元数
     */
    @TableField(value = "total_units_sold")
    private BigDecimal totalUnitsSold;

    /**
     * 取消的销售单元数
     */
    @TableField(value = "cancelled_units")
    private BigDecimal cancelledUnits;

    /**
     * 取消的销售额
     */
    @TableField(value = "cancelled_sales")
    private BigDecimal cancelledSales;

    /**
     * 商品转化率
     */
    @TableField(value = "item_conversion_rate")
    private BigDecimal itemConversionRate;

    /**
     * 基础商品ID
     */
    @TableField(value = "base_item_id")
    private String baseItemId;

    /**
     * 产品总访问量
     */
    @TableField(value = "total_product_visits")
    private BigDecimal totalProductVisits;

    /**
     * GMV 比例
     */
    @TableField(value = "gmv_comp_percent")
    private BigDecimal gmvCompPercent;

    /**
     * 授权订单数
     */
    @TableField(value = "authorized_orders")
    private BigDecimal authorizedOrders;

    /**
     * 授权销售单元数
     */
    @TableField(value = "authorized_units")
    private BigDecimal authorizedUnits;

    /**
     * 授权销售额
     */
    @TableField(value = "authorized_sales")
    private BigDecimal authorizedSales;

    /**
     * 去年 GMV 总额
     */
    @TableField(value = "total_ly_gmv")
    private BigDecimal totalLyGmv;

    /**
     * 产品页面浏览量
     */
    @TableField(value = "product_level_pageviews")
    private BigDecimal productLevelPageviews;

    /**
     * 产品页面转化率
     */
    @TableField(value = "product_level_conversion_rate")
    private BigDecimal productLevelConversionRate;

    /**
     * 退货销售额
     */
    @TableField(value = "refunded_sales")
    private BigDecimal refundedSales;

    /**
     * 唯一请求id
     */
    @TableField(value = "request_id")
    private String requestId;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        WalmartItemPerformanceReport other = (WalmartItemPerformanceReport) that;
        return (this.getProductName() == null ? other.getProductName() == null : this.getProductName().equals(other.getProductName()))
            && (this.getItemId() == null ? other.getItemId() == null : this.getItemId().equals(other.getItemId()))
            && (this.getSkuId() == null ? other.getSkuId() == null : this.getSkuId().equals(other.getSkuId()))
            && (this.getSuperDepartment() == null ? other.getSuperDepartment() == null : this.getSuperDepartment().equals(other.getSuperDepartment()))
            && (this.getDepartment() == null ? other.getDepartment() == null : this.getDepartment().equals(other.getDepartment()))
            && (this.getCategory() == null ? other.getCategory() == null : this.getCategory().equals(other.getCategory()))
            && (this.getSubCategory() == null ? other.getSubCategory() == null : this.getSubCategory().equals(other.getSubCategory()))
            && (this.getBrand() == null ? other.getBrand() == null : this.getBrand().equals(other.getBrand()))
            && (this.getGmv() == null ? other.getGmv() == null : this.getGmv().equals(other.getGmv()))
            && (this.getCommission() == null ? other.getCommission() == null : this.getCommission().equals(other.getCommission()))
            && (this.getGmvCommission() == null ? other.getGmvCommission() == null : this.getGmvCommission().equals(other.getGmvCommission()))
            && (this.getAur() == null ? other.getAur() == null : this.getAur().equals(other.getAur()))
            && (this.getTotalUnitsSold() == null ? other.getTotalUnitsSold() == null : this.getTotalUnitsSold().equals(other.getTotalUnitsSold()))
            && (this.getCancelledUnits() == null ? other.getCancelledUnits() == null : this.getCancelledUnits().equals(other.getCancelledUnits()))
            && (this.getCancelledSales() == null ? other.getCancelledSales() == null : this.getCancelledSales().equals(other.getCancelledSales()))
            && (this.getItemConversionRate() == null ? other.getItemConversionRate() == null : this.getItemConversionRate().equals(other.getItemConversionRate()))
            && (this.getBaseItemId() == null ? other.getBaseItemId() == null : this.getBaseItemId().equals(other.getBaseItemId()))
            && (this.getTotalProductVisits() == null ? other.getTotalProductVisits() == null : this.getTotalProductVisits().equals(other.getTotalProductVisits()))
            && (this.getGmvCompPercent() == null ? other.getGmvCompPercent() == null : this.getGmvCompPercent().equals(other.getGmvCompPercent()))
            && (this.getAuthorizedOrders() == null ? other.getAuthorizedOrders() == null : this.getAuthorizedOrders().equals(other.getAuthorizedOrders()))
            && (this.getAuthorizedUnits() == null ? other.getAuthorizedUnits() == null : this.getAuthorizedUnits().equals(other.getAuthorizedUnits()))
            && (this.getAuthorizedSales() == null ? other.getAuthorizedSales() == null : this.getAuthorizedSales().equals(other.getAuthorizedSales()))
            && (this.getTotalLyGmv() == null ? other.getTotalLyGmv() == null : this.getTotalLyGmv().equals(other.getTotalLyGmv()))
            && (this.getProductLevelPageviews() == null ? other.getProductLevelPageviews() == null : this.getProductLevelPageviews().equals(other.getProductLevelPageviews()))
            && (this.getProductLevelConversionRate() == null ? other.getProductLevelConversionRate() == null : this.getProductLevelConversionRate().equals(other.getProductLevelConversionRate()))
            && (this.getRefundedSales() == null ? other.getRefundedSales() == null : this.getRefundedSales().equals(other.getRefundedSales()))
            && (this.getRequestId() == null ? other.getRequestId() == null : this.getRequestId().equals(other.getRequestId()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getProductName() == null) ? 0 : getProductName().hashCode());
        result = prime * result + ((getItemId() == null) ? 0 : getItemId().hashCode());
        result = prime * result + ((getSkuId() == null) ? 0 : getSkuId().hashCode());
        result = prime * result + ((getSuperDepartment() == null) ? 0 : getSuperDepartment().hashCode());
        result = prime * result + ((getDepartment() == null) ? 0 : getDepartment().hashCode());
        result = prime * result + ((getCategory() == null) ? 0 : getCategory().hashCode());
        result = prime * result + ((getSubCategory() == null) ? 0 : getSubCategory().hashCode());
        result = prime * result + ((getBrand() == null) ? 0 : getBrand().hashCode());
        result = prime * result + ((getGmv() == null) ? 0 : getGmv().hashCode());
        result = prime * result + ((getCommission() == null) ? 0 : getCommission().hashCode());
        result = prime * result + ((getGmvCommission() == null) ? 0 : getGmvCommission().hashCode());
        result = prime * result + ((getAur() == null) ? 0 : getAur().hashCode());
        result = prime * result + ((getTotalUnitsSold() == null) ? 0 : getTotalUnitsSold().hashCode());
        result = prime * result + ((getCancelledUnits() == null) ? 0 : getCancelledUnits().hashCode());
        result = prime * result + ((getCancelledSales() == null) ? 0 : getCancelledSales().hashCode());
        result = prime * result + ((getItemConversionRate() == null) ? 0 : getItemConversionRate().hashCode());
        result = prime * result + ((getBaseItemId() == null) ? 0 : getBaseItemId().hashCode());
        result = prime * result + ((getTotalProductVisits() == null) ? 0 : getTotalProductVisits().hashCode());
        result = prime * result + ((getGmvCompPercent() == null) ? 0 : getGmvCompPercent().hashCode());
        result = prime * result + ((getAuthorizedOrders() == null) ? 0 : getAuthorizedOrders().hashCode());
        result = prime * result + ((getAuthorizedUnits() == null) ? 0 : getAuthorizedUnits().hashCode());
        result = prime * result + ((getAuthorizedSales() == null) ? 0 : getAuthorizedSales().hashCode());
        result = prime * result + ((getTotalLyGmv() == null) ? 0 : getTotalLyGmv().hashCode());
        result = prime * result + ((getProductLevelPageviews() == null) ? 0 : getProductLevelPageviews().hashCode());
        result = prime * result + ((getProductLevelConversionRate() == null) ? 0 : getProductLevelConversionRate().hashCode());
        result = prime * result + ((getRefundedSales() == null) ? 0 : getRefundedSales().hashCode());
        result = prime * result + ((getRequestId() == null) ? 0 : getRequestId().hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", productName=").append(productName);
        sb.append(", itemId=").append(itemId);
        sb.append(", skuId=").append(skuId);
        sb.append(", superDepartment=").append(superDepartment);
        sb.append(", department=").append(department);
        sb.append(", category=").append(category);
        sb.append(", subCategory=").append(subCategory);
        sb.append(", brand=").append(brand);
        sb.append(", gmv=").append(gmv);
        sb.append(", commission=").append(commission);
        sb.append(", gmvCommission=").append(gmvCommission);
        sb.append(", aur=").append(aur);
        sb.append(", totalUnitsSold=").append(totalUnitsSold);
        sb.append(", cancelledUnits=").append(cancelledUnits);
        sb.append(", cancelledSales=").append(cancelledSales);
        sb.append(", itemConversionRate=").append(itemConversionRate);
        sb.append(", baseItemId=").append(baseItemId);
        sb.append(", totalProductVisits=").append(totalProductVisits);
        sb.append(", gmvCompPercent=").append(gmvCompPercent);
        sb.append(", authorizedOrders=").append(authorizedOrders);
        sb.append(", authorizedUnits=").append(authorizedUnits);
        sb.append(", authorizedSales=").append(authorizedSales);
        sb.append(", totalLyGmv=").append(totalLyGmv);
        sb.append(", productLevelPageviews=").append(productLevelPageviews);
        sb.append(", productLevelConversionRate=").append(productLevelConversionRate);
        sb.append(", refundedSales=").append(refundedSales);
        sb.append(", requestId=").append(requestId);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}